Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

183
Vistas
¿Qué es la "regla de flujo de datos unidireccional" de Angular?

La "regla de flujo de datos unidireccional" de Angular se menciona varias veces en los documentos , pero en ninguna parte los documentos de Angular definen claramente (énfasis en claramente ) la regla de flujo de datos unidireccional.

Aquí están las cosas más cercanas que pude encontrar a una definición clara de la regla de flujo de datos unidireccional:

Desde esta página :

La regla de flujo de datos unidireccional de Angular prohíbe las actualizaciones de la vista después de que se haya compuesto.

Está bien, pero ¿qué significa exactamente que una vista haya sido compuesta? ¿Qué constituye una actualización de la vista? ¿No estamos actualizando las vistas todo el tiempo?

Desde esta página :

Una afirmación importante [enableProdMode] disabled verifica que una pasada de detección de cambios no genere cambios adicionales en ningún enlace (también conocido como flujo de datos unidireccional).

Tuve que leer esta oración unas 8 veces muy lentamente y todavía no lo entiendo. Cuando dice "también conocido como flujo de datos unidireccional", asumo que lo que también se conoce como flujo de datos unidireccional es "que un pase de detección de cambios no da como resultado cambios adicionales en ningún enlace". Está bien, tal vez nos estamos acercando. Aunque bastante abstracto. ¿Qué tal un ejemplo o algo?


Estos dos anuncios publicitarios bastante opacos son todos los documentos de Angular que aparentemente nos dan para salirnos de la regla de flujo de datos unidireccional. Parece insuficiente.

¿Alguien puede explicármelo más claro, preferiblemente como si fuera muy tonto?


Editar : encontré lo que podría ser una tercera pista, en esta página :

Una expresión de plantilla no debe cambiar ningún estado de la aplicación que no sea el valor de la propiedad de destino.

Esta regla es esencial para la política de "flujo de datos unidireccional" de Angular. Nunca debe preocuparse de que leer el valor de un componente pueda cambiar algún otro valor mostrado. La vista debe ser estable a lo largo de una sola pasada de renderizado.

Bueno. Nunca debe preocuparse de que leer el valor de un componente pueda cambiar algún otro valor mostrado. ¿Es esa la regla de flujo de datos unidireccional de Angular? No lo creo porque no parece estar de acuerdo con las otras menciones de la regla. Todavía estoy confundido.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En Angular anterior a v1.5, el enlace bidireccional era la norma, por lo que si creaba un objeto secundario en un componente, el principal mantenía una referencia a él, por lo que si actualizaba el objeto en el principal, actualizaba el secundario, y si actualizaste el objeto en el niño, actualizó el padre. Esto generó una gran cantidad de gastos generales y vería un impacto significativo en el rendimiento con una gran cantidad de componentes secundarios que mantienen enlaces bidireccionales con el principal, por ejemplo, un componente de contenedor principal que carga una lista de datos de pasajeros y muestra un componente secundario para cada uno. pasajero con los atributos específicos para ese pasajero. Se observa a los padres en busca de cambios, y se observa a todos los niños en busca de cambios, y se los reevalúa constantemente.

El enlace de datos unidireccional se introdujo en Angular1.5, pero es una gran parte de las ganancias de rendimiento de Angular2. Los datos fluyen del padre al hijo, pero no al revés. Si los datos principales cambian, esos cambios se envían al elemento secundario, pero si el elemento secundario cambia, esos cambios no se propagan automáticamente al elemento principal. Usted administra las actualizaciones del elemento secundario al elemento principal al enviar explícitamente un evento de respaldo al elemento principal con los datos modificados e instruir al elemento principal para que actualice los datos específicos que se modificaron. El flujo de datos unidireccional toma el control y el padre, con datos actualizados, actualiza los hijos según corresponda.

over 4 years ago · Santiago Trujillo Denunciar

0

El "flujo de datos unidireccional" se refiere al proceso de detección de cambios subyacente. Entonces la respuesta a la pregunta.....

Nunca debe preocuparse de que leer el valor de un componente pueda cambiar algún otro valor mostrado. ¿Es esa la regla de flujo de datos unidireccional de Angular?

...... Es sí.

Durante la fase de detección de cambios, Angular verificará si una variable a la que se hace referencia en una expresión en la plantilla ha cambiado. Si es así, este nuevo valor se inserta en el HTML. Mientras se lleva a cabo esta comprobación, la función o expresión 'captador' no debería cambiar ningún otro valor.

Es la sección Sin efectos secundarios de https://angular.io/guide/template-syntax#expression-guidelines

Muy buen artículo (Thoughtram.io) https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html

La razón por la que los datos fluyen de arriba hacia abajo es porque la detección de cambios también se realiza siempre de arriba hacia abajo para cada componente, cada vez, comenzando desde el componente raíz. Esto es increíble, ya que el flujo de datos unidireccional es más predecible que los ciclos. Siempre sabemos de dónde provienen los datos que usamos en nuestras vistas, porque solo pueden resultar de su componente.

Otra observación interesante es que la detección de cambios se estabiliza después de un solo paso. Lo que significa que, si uno de nuestros componentes causa efectos secundarios adicionales después de la primera ejecución durante la detección de cambios, Angular arrojará un error.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda